# llm_explainer.py
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.llms import Ollama  # 免费本地 LLM
# 或使用 OpenAI: from langchain_openai import ChatOpenAI

# 提示词模板
prompt = ChatPromptTemplate.from_template("""
你是一个数据库专家，请用中文向非技术人员解释以下事务日志的含义和潜在风险。

事务信息：
- 执行时长：{duration_sec} 秒
- 等待时间：{wait_time_ms} 毫秒
- 影响行数：{rows_affected}
- 锁数量：{lock_count}
- 是否长事务：{is_long_running}

请回答：
1. 这个事务在做什么？
2. 是否存在性能问题？
3. 对业务有什么影响？
4. 建议如何优化？
""")

# 使用本地 LLM（如 Ollama + llama3）
llm = Ollama(model="llama3")  # 下载：https://ollama.com

def explain_transaction(tx_info):
    chain = prompt | llm
    response = chain.invoke(tx_info)
    return response

# 示例
if __name__ == "__main__":
    tx = {
        "duration_sec": 450,
        "wait_time_ms": 700,
        "rows_affected": 15,
        "lock_count": 7,
        "is_long_running": "是"
    }
    explanation = explain_transaction(tx)
    print("💬 大模型解释：\n", explanation)